package tree;

/**
 * @author justnow
 * Created on 2020-09-29
 * Description
 *
 * 输入一颗二叉树和一个整数，判断从根节点到叶子节点是否存在路径和为这个整数的情况
 *
 */
public class SwardOffer34_1 {
    public static void main(String[] args) {
    }
    public static boolean hashPathSum(TreeNode root, int sum) {
        return dfs(root, sum);
    }
    private static boolean dfs(TreeNode root, int sum) {
        if (root == null && sum != 0) { //如果某个节点为null，且sum不为0，说明该条路径上的和不为sum；
            return false;
        }
        if (sum == 0 && root != null && root.left == null & root.right == null) { //如果sum为0，且root不为空，但是其左右子节点为空，那么就说明该路径是我们需要寻找
            return true;
        }
        sum -= root.val; //每次让sum值减去当前节点的val值
        boolean res = dfs(root.left, sum) || dfs(root.right, sum); //判断其左右子节点的内容
        return res;
    }
}
